#pragma once

void hardfile_free();
void getchsgeometry(ulong64 size, int* pcyl, int* phead, int* psectorspertrack);
void hdf_hd_close(hd_hardfiledata* hfd);
int hdf_hd_open(hd_hardfiledata* hfd, const TCHAR* path, int blocksize, const TCHAR* devname,
    int sectors, int surfaces, int reserved, int bootpri);
int hdf_open(hardfiledata* hfd, const TCHAR* name);
int hdf_dup(hardfiledata* dhfd, const hardfiledata* shfd);
void hdf_close(hardfiledata* hfd);
int vhd_create(const TCHAR * name, ulong64 size, uint);
extern int hdf_read(struct hardfiledata* hfd, void* buffer, ulong64 offset, int len);
extern int hdf_write(struct hardfiledata* hfd, void* buffer, ulong64 offset, int len);
int scsi_emulate(hardfiledata* hfd, hd_hardfiledata* hdhfd, byte* cmdbuf, int scsi_cmd_len,
    byte* scsi_data, int* data_len, byte* r, int* reply_len, byte* s, int* sense_len);
void hardfile_do_disk_change(DeviceConfigInfo* dci, int insert);
void hardfile_reset();
void hardfile_install();